package cn.stylefeng.guns.sys.modular.system.mapper;

import cn.stylefeng.guns.sys.modular.system.entity.AttendAudit;
import cn.stylefeng.guns.sys.modular.system.entity.User;
import cn.stylefeng.guns.sys.modular.system.model.params.AttendAuditDdSupervisorParam;
import cn.stylefeng.guns.sys.modular.system.model.params.AttendAuditParam;
import cn.stylefeng.guns.sys.modular.system.model.result.AttendAuditBtyAreaAuditStatusResult;
import cn.stylefeng.guns.sys.modular.system.model.result.AttendAuditResult;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 出勤_督导审核店长表 Mapper 接口
 * </p>
 *
 * @author wjk
 * @since 2021-09-14
 */
public interface AttendAuditMapper extends BaseMapper<AttendAudit> {

    /**
     * 获取列表
     *
     * @author wjk
     * @Date 2021-09-14
     */
    List<AttendAuditResult> customList(@Param("paramCondition") AttendAuditParam paramCondition);

    /**
     * 获取map列表
     *
     * @author wjk
     * @Date 2021-09-14
     */
    List<Map<String, Object>> customMapList(@Param("paramCondition") AttendAuditParam paramCondition);

    /**
     * 获取分页实体列表
     *
     * @author wjk
     * @Date 2021-09-14
     */
    Page<AttendAuditResult> customPageList(@Param("page") Page page, @Param("paramCondition") AttendAuditParam paramCondition);

    /**
     * 获取分页map列表
     *
     * @author wjk
     * @Date 2021-09-14
     */
    Page<Map<String, Object>> customPageMapList(@Param("page") Page page, @Param("paramCondition") AttendAuditParam paramCondition);

    /**
     * （督导审核页面）督导审核，通过；
     * @author wjk
     * @Date 2021-09-18
     */
    int setAttendAuditApproveByAaId(List<Long> aaIdListWithoutDuplicates);

    /**
     * （督导审核页面）督导审核，驳回；
     * @author wjk
     * @Date 2021-09-18
     */
    int setAttendAuditBackByAaId(List<Long> aaIdListWithoutDuplicates);

    /**
     * 根据督导的手机号，和提交月份或者考勤月份，获得该月的考勤提交门店统计
     *
     * @author wjk
     * @Date 2021-09-23
     */
    Map<String,String> getStatusCountByDd(AttendAuditDdSupervisorParam param);

    /**
     * 根据大店长的手机号，和提交月份或者考勤月份，获得该月的考勤提交门店统计
     *
     * @author wjk
     * @Date 2021-10-19
     */
    Map<String,String> getStatusCountByDdz(AttendAuditDdSupervisorParam param);
    /**
     * 根据运营经理的手机号，和提交月份或者考勤月份，获得该月的考勤提交门店统计
     *
     * @author wjk
     * @Date 2021-10-19
     */
    Map<String,String> getStatusCountByYyjl(AttendAuditDdSupervisorParam param);

    /**
     * 根据店长手机号，和考勤时间，删除这家店这个月的员工信息提交信息记录
     *
     * @author wjk
     * @Date 2021-10-28
     */
    int deleteAttendAuditByAccount(AttendAuditDdSupervisorParam param);

    /**
     * 查询所有人事档案中的数据，未完成，未提交，或者驳回，考勤的数据，并且考勤店长不为空的数据
     * @param attendMonth
     * @return
     * @author wjk
     * @Date 2021-11-11
     */
    List<AttendAuditBtyAreaAuditStatusResult> getAttendAuditBtyAreaAuditStatusResultPushMsgToIMAndWx(@Param("attendMonth") String attendMonth);

    /**
     * 需要查找出openid 数组列表
     * @param attendMonth
     * @return
     */
    List<User> getUsersPushMsgToWx(String attendMonth);
    /**
     *
     *
     * 强制驳回数据到督导驳回状态
     * @author wjk
     * @Date 2021-11-18
     */
    int auditStatusToSubmitAudit(AttendAuditBtyAreaAuditStatusResult attendAuditBtyAreaAuditStatusResult);
}
